/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2012 All Rights Reserved.
 */
package com.zhz.lib.cms.manage.imagesmanage;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.apache.log4j.Logger;

/**
 *
 * @author Administrator
 * @version $Id: PicProperties.java, v 0.1 Dec 8, 2012 4:07:42 PM Administrator Exp $
 */
public class PicProperties {
    private static Logger logger = Logger.getLogger(PicProperties.class);

    // 读取properties的全部信息
    public static Map<String, String> readProperties(String filePath) {

        Map<String, String> map = new HashMap<String, String>();
        Properties props = new Properties();

        try {
            InputStream in = new BufferedInputStream(new FileInputStream(filePath));
            props.load(in);
            Enumeration en = props.propertyNames();
            while (en.hasMoreElements()) {
                String key = (String) en.nextElement();
                String property = props.getProperty(key);
                map.put(key, property);
            }
            return map;
        } catch (Exception e) {
            logger.error(e);
        }
        return new HashMap<String, String>();
    }

    // 写入properties信息
    public static void writeProperties(String filePath, Map<String, String> map) {

        Properties prop = new Properties();

        try {
            InputStream fis = new FileInputStream(filePath);

            // 从输入流中读取属性列表（键和元素对）
            prop.load(fis);

            // 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。

            OutputStream fos = new FileOutputStream(filePath);
            prop.clear();
            Set<java.util.Map.Entry<String, String>> keys = map.entrySet();
            for (Iterator<java.util.Map.Entry<String, String>> it = keys.iterator(); it.hasNext();) {
                java.util.Map.Entry<String, String> entry = (java.util.Map.Entry<String, String>) it
                    .next();
                prop.setProperty((String) (entry.getKey()), entry.getValue());
            }

            // 以适合使用 load 方法加载到 Properties 表中的格式，
            // 将此 Properties 表中的属性列表（键和元素对）写入输出流
            prop.store(fos, null);
        } catch (Exception e) {
            logger.error(e);
        }
    }
}
